//tostring.cpp
#include "memrw.h"
#include "stdio.h"
#include "stdlib.h"
#include "../include/HashTable.h"

void MEMIOAPI_WriteU16Le(IN U16 u16_In,OUT void *pvOut)
{
	((U8*)(pvOut))[0]=(u16_In&0x00FF);
	((U8*)(pvOut))[1]=((u16_In>>8)&0x00FF);
}

void MEMIOAPI_WriteU32Le(IN U32 u32_In,OUT void *pvOut)
{
	MEMIOAPI_WriteU16Le(u32_In&0xFFFF,pvOut);
	MEMIOAPI_WriteU16Le((u32_In>>16)&0xFFFF,(U8*)pvOut+2);
}

void MEMIOAPI_WriteU16Be(IN U16 u16_In,OUT void *pvOut)
{
	((U8*)(pvOut))[1]=(u16_In&0x00FF);
	((U8*)(pvOut))[0]=((u16_In>>8)&0x00FF);
}

void MEMIOAPI_WriteU32Be(IN U32 u32_In,OUT void *pvOut)
{
	MEMIOAPI_WriteU16Le(u32_In&0xFFFF,(U8*)pvOut+2);
	MEMIOAPI_WriteU16Le((u32_In>>16)&0xFFFF,pvOut);
}

U16 MEMIOAPI_ReadU16Le(IN void *pvIn)
{
	U16 u16_Ret;

	u16_Ret=((U8*)(pvIn))[1];
	u16_Ret=(u16_Ret<<8)|((U8*)(pvIn))[0];
	return u16_Ret;
}

U32 MEMIOAPI_ReadU32Le(IN void *pvIn)
{
	U32 u32_Ret;

	u32_Ret=MEMIOAPI_ReadU16Le((U8*)pvIn+2);
	u32_Ret<<=16;
	u32_Ret+=MEMIOAPI_ReadU16Le(pvIn);
	return u32_Ret;
}

U16 MEMIOAPI_ReadU16Be(IN void *pvIn)
{
	U16 u16_Ret;

	u16_Ret=((U8*)(pvIn))[0];
	u16_Ret=(u16_Ret<<8)|((U8*)(pvIn))[1];
	return u16_Ret;
}

U32 MEMIOAPI_ReadU32Be(IN void *pvIn)
{
	U32 u32_Ret;

	u32_Ret=MEMIOAPI_ReadU16Le(pvIn);
	u32_Ret<<=16;
	u32_Ret+=MEMIOAPI_ReadU16Le((U8*)pvIn+2);
	return u32_Ret;
}

